package cn.wolfcode.shop.service;

import cn.wolfcode.shop.domain.Property;
import cn.wolfcode.shop.domain.SkuProperty;
import cn.wolfcode.shop.vo.GenerateSkuVo;

import java.util.List;
import java.util.Map;

/**
 * Created by wolfcode on 2018/8/17.
 */
public interface ISkuPropertyService {
    /**
     * 根据分类Id获取sku属性列表
     * @param catalogId
     * @return
     */
    List<SkuProperty> queryByCatalogId(Long catalogId);

    /**
     * 新增/更新对象
     * @param skuProperty
     */
    void saveOrUpdate(SkuProperty skuProperty);

    /**
     * 根据id删除属性
     * @param skuPropertyId
     */
    void delete(Long skuPropertyId);

    /**
     * 根据分类id获取该类型下的sku属性个数
     * @param id
     * @return
     */
    Integer queryCountByCatalogId(Long id);

    /**
     * 根据分类id获取该分类的sku属性集合
     * 如果属性集合中属性的type是下拉框,查询出该下拉框的属性值的集合
     * @param catalogId
     * @return
     */
    List<SkuProperty> queryByCatalogIdForProduct(Long catalogId);

    /**
     * 根据id获取sku属性
     * @param skuPropertyId
     * @return
     */
    SkuProperty get(Long skuPropertyId);

    /**
     * 生成SKU的逻辑
     * @param generateSkuVo
     * @return
     */
    List<Map<String,Object>> generateSku(GenerateSkuVo generateSkuVo);
}
